<script>
    /* 
    对象是无序的数据集合，标识是键名key
    let {key1: 变量1, key2: 变量2,...} = {key1: val1, key2: val2, ....}
        把val1的值赋给变量1， 把val2的值赋给变量2
        
    简写：对象解构完整写法需要自己起变量名，可以是直接使用键名作为变量名

    */

    // 1.对象的解构
    // let obj1 = {
    //     name: 'Tom',
    //     age: 20
    // };
    // let {name: nameA, age: ageB} = obj1;
    // console.log(nameA, ageB); // Tom 20

    // 2.对象解构的简写（推荐）
    let obj2 = {
        name: 'Tom',
        age: 20
    };
    // let {name: name, age: age} = obj2;  当键名和键值一样时，可以简写
    // let {name, age} = obj2;
    // console.log(name, age); // Tom 20

    // 3.不完全解构
    let obj3 = {
        user: '小明',
        pass: '1234',
        sex: '男'
    }
    // let {pass, sex, user} = obj3;
    // console.log(pass, sex, user); // 1234 男 小明  根据键名进行赋值，没有先后顺序

    // let {pass} = obj3;
    // console.log(pass); // 1234  不需要的不写

    // let {user, height} = obj3;
    // console.log(user, height); // 小明 undefined   没有、找不到为undefined

    // 4.设置默认值：没有值或为undefined时起效
    let {pass, age=0, sex='保密'} = obj3;
    console.log(pass, age, sex); // 1234  0 男

    
</script>